package com.piece.core.framework.annotation.source;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 锁注释
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Lock {

    /**
     * 锁的key
     */
    String key();

    /**
     * 获取锁的最大尝试时间
     */
    long waitTime() default 0;

    /**
     * 加锁的时间
     */
    long leaseTime() default -1;

    /**
     * 参数的时间单位
     */
    TimeUnit unit() default TimeUnit.SECONDS;

    /**
     * 是否公平锁
     */
    boolean isFair() default false;
}